package com.itany.boot.entity;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.io.Serializable;


/**
 * Author:shixiaojun@itany.com
 * Date:2022/3/16 10:37
 * Version:1.0-SNAPSHOT
 */
@Component
// @ConfigurationProperties注解只能出现在被Spring所管理的bean中
// 其主要是为了告诉SpringBoot,将当前类中所有属性与配置文件中的配置进行绑定
// 会自动将配置文件中的key与当前对象的属性名进行绑定
// 将对应的key的value赋值给与key名字一直的属性
//@ConfigurationProperties
// 在实际开发中,我们在配置bean的属性值的时候,会为每一个属性加一个前缀
// 防止出现关键字冲突的情况,例如:属性username就会存在关键字冲突
// 因此,在配置文件中,可能会存在前缀
// 而带有前缀的key不可能与属性名一致
// 因此,可以在注解中设置当前配置的前缀的值
// 当进行映射的时候,会自动为每一个属性添加指定的前缀
@ConfigurationProperties(prefix = "user")
public class User implements Serializable {

//    @Value("1")
//    private Integer id;
//    @Value("admin")
//    private String username;
//    @Value("123456")
//    private String password;
//    @Value("13812345678")
//    private String phone;
//    @Value("江苏-南京")
//    private String address;

//    @Value("${user.id}")
//    private Integer id;
//    @Value("${user.username}")
//    private String username;
//    @Value("${user.password}")
//    private String password;
//    @Value("${user.phone}")
//    private String phone;
//    @Value("${user.address}")
//    private String address;

    private Integer id;
    private String username;
    private String password;
    private String phone;
    private String address;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", phone='" + phone + '\'' +
                ", address='" + address + '\'' +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}
